package com.xinyue.design.decorator;

public class Client{

	public static void main(String[] args) throws Exception {
		
		/**装饰基类：也就是被装饰的对象。
		 * 功能：计算原始工资，作为后面装饰器计算的基数据。
		 */
		Salary salary = new Salary();
		
		/**
		 * 创建具体装饰器对象
		 * 创建过程中，涉及到装饰顺序问题。实现原则应该是，各个装饰者之间最好是不要有先后顺序的限制。
		 */
		//1:先计算销售奖金，汇总并返回。
		BonusSell sell = new BonusSell(salary);
		//2.再计算工作奖金，汇总所有的奖金并返回。
		BonusWork work = new BonusWork(sell);

		//测试：获得某人的奖金总数。
		double bonus = work.computeBonus(3000);
		System.out.println(bonus);
		
		//如果某人是领导，还有领导奖金。这个可以创建BonusManager对象。用于计算管理奖金。
		//实现时，创建BonusManager(work)对象即可。
	}
}
